常见的逻辑题

找个位数

水仙花数

题目:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个 3 位数,该数字每个位上数字的立方之和正好等于它本身,例如:1^3 + 5^3+ 3^3=153
思路:

Python 实现:

# 判断是否是水仙花数
for n in range(100, 1000):
    # 取余得到个位数
    low = n % 10
    # 百位对10取整得到十位数,十位再取余得到十位数
    middle = n // 10 % 10
    # 百位对100取整得到百位数
    high = n // 100
    if n == low ** 3 + middle ** 3 + high ** 3:
        print(n)

数字翻转

题目:正整数翻转,例如:将 12345 变成 54321
思路:

Python 实现:

num = 12345
## 逆序输出
reversed_num = 0
while num > 0 :
    ## 每次循环后,将当前reversed_num乘以10,往前进一位,再对10取余,添加到高位
    reversed_num = reversed_num*10 + num%10
    # 不断地取个位数,将num从低位到高位一个个数取出来,然后逆序追加到reversed_num
    num //= 10
print(reversed_num)